home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / CIncludes / MacMemory.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-12  |  29.1 KB  |  809 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        MacMemory.h
  3.  
  4.      Contains:    Memory Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1985-1997 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __MACMEMORY__
  19. #define __MACMEMORY__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __MIXEDMODE__
  25. #include <MixedMode.h>
  26. #endif
  27.  
  28.  
  29.  
  30. #if PRAGMA_ONCE
  31. #pragma once
  32. #endif
  33.  
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37.  
  38. #if PRAGMA_IMPORT
  39. #pragma import on
  40. #endif
  41.  
  42. #if PRAGMA_STRUCT_ALIGN
  43.     #pragma options align=mac68k
  44. #elif PRAGMA_STRUCT_PACKPUSH
  45.     #pragma pack(push, 2)
  46. #elif PRAGMA_STRUCT_PACK
  47.     #pragma pack(2)
  48. #endif
  49.  
  50.  
  51.  
  52. enum {
  53.     maxSize                        = 0x00800000                    /*Max data block size is 8 megabytes*/
  54. };
  55.  
  56.  
  57. enum {
  58.     defaultPhysicalEntryCount    = 8
  59. };
  60.  
  61.  
  62. enum {
  63.                                                                 /* values returned from the GetPageState function */
  64.     kPageInMemory                = 0,
  65.     kPageOnDisk                    = 1,
  66.     kNotPaged                    = 2
  67. };
  68.  
  69.  
  70. enum {
  71.                                                                 /* masks for Zone->heapType field */
  72.     k32BitHeap                    = 1,                            /* valid in all Memory Managers */
  73.     kNewStyleHeap                = 2,                            /* true if new Heap Manager is present */
  74.     kNewDebugHeap                = 4                                /* true if new Heap Manager is running in debug mode on this heap */
  75. };
  76.  
  77. /* Note: The type "Size" moved to Types.h */
  78.  
  79.  
  80. typedef CALLBACK_API( long , GrowZoneProcPtr )(Size cbNeeded);
  81. typedef CALLBACK_API( void , PurgeProcPtr )(Handle blockToPurge);
  82. typedef CALLBACK_API( void , UserFnProcPtr )(void *parameter);
  83. /*
  84.     WARNING: UserFnProcPtr uses register based parameters under classic 68k
  85.              and cannot be written in a high-level language without 
  86.              the help of mixed mode or assembly glue.
  87. */
  88. typedef STACK_UPP_TYPE(GrowZoneProcPtr)                         GrowZoneUPP;
  89. typedef STACK_UPP_TYPE(PurgeProcPtr)                             PurgeUPP;
  90. typedef REGISTER_UPP_TYPE(UserFnProcPtr)                         UserFnUPP;
  91. struct Zone {
  92.     Ptr                             bkLim;
  93.     Ptr                             purgePtr;
  94.     Ptr                             hFstFree;
  95.     long                             zcbFree;
  96.     GrowZoneUPP                     gzProc;
  97.     short                             moreMast;
  98.     short                             flags;
  99.     short                             cntRel;
  100.     short                             maxRel;
  101.     short                             cntNRel;
  102.     SInt8                             heapType;                    /* previously "maxNRel", now holds flags (e.g. k32BitHeap)*/
  103.     SInt8                             unused;
  104.     short                             cntEmpty;
  105.     short                             cntHandles;
  106.     long                             minCBFree;
  107.     PurgeUPP                         purgeProc;
  108.     Ptr                             sparePtr;
  109.     Ptr                             allocPtr;
  110.     short                             heapData;
  111. };
  112. typedef struct Zone Zone;
  113.  
  114. typedef Zone *                            THz;
  115. struct MemoryBlock {
  116.     void *                            address;
  117.     unsigned long                     count;
  118. };
  119. typedef struct MemoryBlock MemoryBlock;
  120.  
  121. struct LogicalToPhysicalTable {
  122.     MemoryBlock                     logical;
  123.     MemoryBlock                     physical[8];
  124. };
  125. typedef struct LogicalToPhysicalTable LogicalToPhysicalTable;
  126.  
  127. typedef short                             PageState;
  128. typedef short                             StatusRegisterContents;
  129. enum { uppGrowZoneProcInfo = 0x000000F0 };                         /* pascal 4_bytes Func(4_bytes) */
  130. enum { uppPurgeProcInfo = 0x000000C0 };                         /* pascal no_return_value Func(4_bytes) */
  131. enum { uppUserFnProcInfo = 0x00009802 };                         /* register no_return_value Func(4_bytes:A0) */
  132. #define NewGrowZoneProc(userRoutine)                             (GrowZoneUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppGrowZoneProcInfo, GetCurrentArchitecture())
  133. #define NewPurgeProc(userRoutine)                                 (PurgeUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppPurgeProcInfo, GetCurrentArchitecture())
  134. #define NewUserFnProc(userRoutine)                                 (UserFnUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppUserFnProcInfo, GetCurrentArchitecture())
  135. #define CallGrowZoneProc(userRoutine, cbNeeded)                 CALL_ONE_PARAMETER_UPP((userRoutine), uppGrowZoneProcInfo, (cbNeeded))
  136. #define CallPurgeProc(userRoutine, blockToPurge)                 CALL_ONE_PARAMETER_UPP((userRoutine), uppPurgeProcInfo, (blockToPurge))
  137. #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  138.     #pragma parameter CallUserFnProc(__A1, __A0)
  139.     void CallUserFnProc(UserFnUPP routine, void * parameter) = 0x4E91;
  140. #else
  141.     #define CallUserFnProc(userRoutine, parameter)                 CALL_ONE_PARAMETER_UPP((userRoutine), uppUserFnProcInfo, (parameter))
  142. #endif
  143.  
  144.  
  145. EXTERN_API( Ptr )
  146. GetApplLimit                    (void)                                                        TWOWORDINLINE(0x2EB8, 0x0130);
  147.  
  148. EXTERN_API( THz )
  149. SystemZone                        (void)                                                        TWOWORDINLINE(0x2EB8, 0x02A6);
  150.  
  151. EXTERN_API( THz )
  152. ApplicationZone                    (void)                                                        TWOWORDINLINE(0x2EB8, 0x02AA);
  153.  
  154. EXTERN_API( Handle )
  155. GZSaveHnd                        (void)                                                        TWOWORDINLINE(0x2EB8, 0x0328);
  156.  
  157. EXTERN_API( Ptr )
  158. TopMem                            (void)                                                        TWOWORDINLINE(0x2EB8, 0x0108);
  159.  
  160. EXTERN_API( OSErr )
  161. MemError                        (void)                                                        TWOWORDINLINE(0x3EB8, 0x0220);
  162.  
  163.  
  164.  
  165.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  166.                                                                                             #pragma parameter __A0 GetZone
  167.                                                                                             #endif
  168. EXTERN_API( THz )
  169. GetZone                            (void)                                                        ONEWORDINLINE(0xA11A);
  170.  
  171.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  172.                                                                                             #pragma parameter __A0 NewHandle(__D0)
  173.                                                                                             #endif
  174. EXTERN_API( Handle )
  175. NewHandle                        (Size                     byteCount)                            ONEWORDINLINE(0xA122);
  176.  
  177.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  178.                                                                                             #pragma parameter __A0 NewHandleSys(__D0)
  179.                                                                                             #endif
  180. EXTERN_API( Handle )
  181. NewHandleSys                    (Size                     byteCount)                            ONEWORDINLINE(0xA522);
  182.  
  183.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  184.                                                                                             #pragma parameter __A0 NewHandleClear(__D0)
  185.                                                                                             #endif
  186. EXTERN_API( Handle )
  187. NewHandleClear                    (Size                     byteCount)                            ONEWORDINLINE(0xA322);
  188.  
  189.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  190.                                                                                             #pragma parameter __A0 NewHandleSysClear(__D0)
  191.                                                                                             #endif
  192. EXTERN_API( Handle )
  193. NewHandleSysClear                (Size                     byteCount)                            ONEWORDINLINE(0xA722);
  194.  
  195.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  196.                                                                                             #pragma parameter __A0 HandleZone(__A0)
  197.                                                                                             #endif
  198. EXTERN_API( THz )
  199. HandleZone                        (Handle                 h)                                    ONEWORDINLINE(0xA126);
  200.  
  201.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  202.                                                                                             #pragma parameter __A0 RecoverHandle(__A0)
  203.                                                                                             #endif
  204. EXTERN_API( Handle )
  205. RecoverHandle                    (Ptr                     p)                                    ONEWORDINLINE(0xA128);
  206.  
  207.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  208.                                                                                             #pragma parameter __A0 RecoverHandleSys(__A0)
  209.                                                                                             #endif
  210. EXTERN_API( Handle )
  211. RecoverHandleSys                (Ptr                     p)                                    ONEWORDINLINE(0xA528);
  212.  
  213.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  214.                                                                                             #pragma parameter __A0 NewPtr(__D0)
  215.                                                                                             #endif
  216. EXTERN_API( Ptr )
  217. NewPtr                            (Size                     byteCount)                            ONEWORDINLINE(0xA11E);
  218.  
  219.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  220.                                                                                             #pragma parameter __A0 NewPtrSys(__D0)
  221.                                                                                             #endif
  222. EXTERN_API( Ptr )
  223. NewPtrSys                        (Size                     byteCount)                            ONEWORDINLINE(0xA51E);
  224.  
  225.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  226.                                                                                             #pragma parameter __A0 NewPtrClear(__D0)
  227.                                                                                             #endif
  228. EXTERN_API( Ptr )
  229. NewPtrClear                        (Size                     byteCount)                            ONEWORDINLINE(0xA31E);
  230.  
  231.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  232.                                                                                             #pragma parameter __A0 NewPtrSysClear(__D0)
  233.                                                                                             #endif
  234. EXTERN_API( Ptr )
  235. NewPtrSysClear                    (Size                     byteCount)                            ONEWORDINLINE(0xA71E);
  236.  
  237.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  238.                                                                                             #pragma parameter __A0 PtrZone(__A0)
  239.                                                                                             #endif
  240. EXTERN_API( THz )
  241. PtrZone                            (Ptr                     p)                                    ONEWORDINLINE(0xA148);
  242.  
  243.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  244.                                                                                             #pragma parameter __D0 MaxBlock
  245.                                                                                             #endif
  246. EXTERN_API( long )
  247. MaxBlock                        (void)                                                        ONEWORDINLINE(0xA061);
  248.  
  249.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  250.                                                                                             #pragma parameter __D0 MaxBlockSys
  251.                                                                                             #endif
  252. EXTERN_API( long )
  253. MaxBlockSys                        (void)                                                        ONEWORDINLINE(0xA461);
  254.  
  255.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  256.                                                                                             #pragma parameter __D0 StackSpace
  257.                                                                                             #endif
  258. EXTERN_API( long )
  259. StackSpace                        (void)                                                        ONEWORDINLINE(0xA065);
  260.  
  261.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  262.                                                                                             #pragma parameter __A0 NewEmptyHandle
  263.                                                                                             #endif
  264. EXTERN_API( Handle )
  265. NewEmptyHandle                    (void)                                                        ONEWORDINLINE(0xA166);
  266.  
  267.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  268.                                                                                             #pragma parameter __A0 NewEmptyHandleSys
  269.                                                                                             #endif
  270. EXTERN_API( Handle )
  271. NewEmptyHandleSys                (void)                                                        ONEWORDINLINE(0xA566);
  272.  
  273.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  274.                                                                                             #pragma parameter HLock(__A0)
  275.                                                                                             #endif
  276. EXTERN_API( void )
  277. HLock                            (Handle                 h)                                    ONEWORDINLINE(0xA029);
  278.  
  279.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  280.                                                                                             #pragma parameter HUnlock(__A0)
  281.                                                                                             #endif
  282. EXTERN_API( void )
  283. HUnlock                            (Handle                 h)                                    ONEWORDINLINE(0xA02A);
  284.  
  285.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  286.                                                                                             #pragma parameter HPurge(__A0)
  287.                                                                                             #endif
  288. EXTERN_API( void )
  289. HPurge                            (Handle                 h)                                    ONEWORDINLINE(0xA049);
  290.  
  291.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  292.                                                                                             #pragma parameter HNoPurge(__A0)
  293.                                                                                             #endif
  294. EXTERN_API( void )
  295. HNoPurge                        (Handle                 h)                                    ONEWORDINLINE(0xA04A);
  296.  
  297.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  298.                                                                                             #pragma parameter HLockHi(__A0)
  299.                                                                                             #endif
  300. EXTERN_API( void )
  301. HLockHi                            (Handle                 h)                                    TWOWORDINLINE(0xA064, 0xA029);
  302.  
  303. EXTERN_API( Handle )
  304. TempNewHandle                    (Size                     logicalSize,
  305.                                  OSErr *                resultCode)                            THREEWORDINLINE(0x3F3C, 0x001D, 0xA88F);
  306.  
  307. EXTERN_API( Size )
  308. TempMaxMem                        (Size *                    grow)                                THREEWORDINLINE(0x3F3C, 0x0015, 0xA88F);
  309.  
  310. EXTERN_API( long )
  311. TempFreeMem                        (void)                                                        THREEWORDINLINE(0x3F3C, 0x0018, 0xA88F);
  312.  
  313. EXTERN_API( void )
  314. InitZone                        (GrowZoneUPP             pgrowZone,
  315.                                  short                     cmoreMasters,
  316.                                  void *                    limitPtr,
  317.                                  void *                    startPtr);
  318.  
  319.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  320.                                                                                             #pragma parameter SetZone(__A0)
  321.                                                                                             #endif
  322. EXTERN_API( void )
  323. SetZone                            (THz                     hz)                                    ONEWORDINLINE(0xA01B);
  324.  
  325.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  326.                                                                                             #pragma parameter __D0 CompactMem(__D0)
  327.                                                                                             #endif
  328. EXTERN_API( Size )
  329. CompactMem                        (Size                     cbNeeded)                            ONEWORDINLINE(0xA04C);
  330.  
  331.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  332.                                                                                             #pragma parameter __D0 CompactMemSys(__D0)
  333.                                                                                             #endif
  334. EXTERN_API( Size )
  335. CompactMemSys                    (Size                     cbNeeded)                            ONEWORDINLINE(0xA44C);
  336.  
  337.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  338.                                                                                             #pragma parameter PurgeMem(__D0)
  339.                                                                                             #endif
  340. EXTERN_API( void )
  341. PurgeMem                        (Size                     cbNeeded)                            ONEWORDINLINE(0xA04D);
  342.  
  343.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  344.                                                                                             #pragma parameter PurgeMemSys(__D0)
  345.                                                                                             #endif
  346. EXTERN_API( void )
  347. PurgeMemSys                        (Size                     cbNeeded)                            ONEWORDINLINE(0xA44D);
  348.  
  349.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  350.                                                                                             #pragma parameter __D0 FreeMem
  351.                                                                                             #endif
  352. EXTERN_API( long )
  353. FreeMem                            (void)                                                        ONEWORDINLINE(0xA01C);
  354.  
  355.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  356.                                                                                             #pragma parameter __D0 FreeMemSys
  357.                                                                                             #endif
  358. EXTERN_API( long )
  359. FreeMemSys                        (void)                                                        ONEWORDINLINE(0xA41C);
  360.  
  361.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  362.                                                                                             #pragma parameter ReserveMem(__D0)
  363.                                                                                             #endif
  364. EXTERN_API( void )
  365. ReserveMem                        (Size                     cbNeeded)                            ONEWORDINLINE(0xA040);
  366.  
  367.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  368.                                                                                             #pragma parameter ReserveMemSys(__D0)
  369.                                                                                             #endif
  370. EXTERN_API( void )
  371. ReserveMemSys                    (Size                     cbNeeded)                            ONEWORDINLINE(0xA440);
  372.  
  373.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  374.                                                                                             #pragma parameter __D0 MaxMem(__A1)
  375.                                                                                             #endif
  376. EXTERN_API( Size )
  377. MaxMem                            (Size *                    grow)                                TWOWORDINLINE(0xA11D, 0x2288);
  378.  
  379.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  380.                                                                                             #pragma parameter __D0 MaxMemSys(__A1)
  381.                                                                                             #endif
  382. EXTERN_API( Size )
  383. MaxMemSys                        (Size *                    grow)                                TWOWORDINLINE(0xA51D, 0x2288);
  384.  
  385.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  386.                                                                                             #pragma parameter SetGrowZone(__A0)
  387.                                                                                             #endif
  388. EXTERN_API( void )
  389. SetGrowZone                        (GrowZoneUPP             growZone)                            ONEWORDINLINE(0xA04B);
  390.  
  391.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  392.                                                                                             #pragma parameter MoveHHi(__A0)
  393.                                                                                             #endif
  394. EXTERN_API( void )
  395. MoveHHi                            (Handle                 h)                                    ONEWORDINLINE(0xA064);
  396.  
  397.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  398.                                                                                             #pragma parameter DisposePtr(__A0)
  399.                                                                                             #endif
  400. EXTERN_API( void )
  401. DisposePtr                        (Ptr                     p)                                    ONEWORDINLINE(0xA01F);
  402.  
  403. EXTERN_API( Size )
  404. GetPtrSize                        (Ptr                     p);
  405.  
  406.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  407.                                                                                             #pragma parameter SetPtrSize(__A0, __D0)
  408.                                                                                             #endif
  409. EXTERN_API( void )
  410. SetPtrSize                        (Ptr                     p,
  411.                                  Size                     newSize)                            ONEWORDINLINE(0xA020);
  412.  
  413.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  414.                                                                                             #pragma parameter DisposeHandle(__A0)
  415.                                                                                             #endif
  416. EXTERN_API( void )
  417. DisposeHandle                    (Handle                 h)                                    ONEWORDINLINE(0xA023);
  418.  
  419.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  420.                                                                                             #pragma parameter SetHandleSize(__A0, __D0)
  421.                                                                                             #endif
  422. EXTERN_API( void )
  423. SetHandleSize                    (Handle                 h,
  424.                                  Size                     newSize)                            ONEWORDINLINE(0xA024);
  425.  
  426. /* 
  427.     NOTE
  428.     
  429.     GetHandleSize and GetPtrSize are documented in Inside Mac as returning 0 
  430.     in case of an error, but the traps actually return an error code in D0.
  431.     The glue sets D0 to 0 if an error occured.
  432. */
  433. EXTERN_API( Size )
  434. GetHandleSize                    (Handle                 h);
  435.  
  436.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  437.                                                                                             #pragma parameter __D0 InlineGetHandleSize(__A0)
  438.                                                                                             #endif
  439. EXTERN_API( Size )
  440. InlineGetHandleSize                (Handle                 h)                                    ONEWORDINLINE(0xA025);
  441.  
  442.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  443.                                                                                             #pragma parameter ReallocateHandle(__A0, __D0)
  444.                                                                                             #endif
  445. EXTERN_API( void )
  446. ReallocateHandle                (Handle                 h,
  447.                                  Size                     byteCount)                            ONEWORDINLINE(0xA027);
  448.  
  449.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  450.                                                                                             #pragma parameter ReallocateHandleSys(__A0, __D0)
  451.                                                                                             #endif
  452. EXTERN_API( void )
  453. ReallocateHandleSys                (Handle                 h,
  454.                                  Size                     byteCount)                            ONEWORDINLINE(0xA427);
  455.  
  456.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  457.                                                                                             #pragma parameter EmptyHandle(__A0)
  458.                                                                                             #endif
  459. EXTERN_API( void )
  460. EmptyHandle                        (Handle                 h)                                    ONEWORDINLINE(0xA02B);
  461.  
  462.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  463.                                                                                             #pragma parameter HSetRBit(__A0)
  464.                                                                                             #endif
  465. EXTERN_API( void )
  466. HSetRBit                        (Handle                 h)                                    ONEWORDINLINE(0xA067);
  467.  
  468.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  469.                                                                                             #pragma parameter HClrRBit(__A0)
  470.                                                                                             #endif
  471. EXTERN_API( void )
  472. HClrRBit                        (Handle                 h)                                    ONEWORDINLINE(0xA068);
  473.  
  474.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  475.                                                                                             #pragma parameter __D0 HGetState(__A0)
  476.                                                                                             #endif
  477. EXTERN_API( SInt8 )
  478. HGetState                        (Handle                 h)                                    ONEWORDINLINE(0xA069);
  479.  
  480.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  481.                                                                                             #pragma parameter HSetState(__A0, __D0)
  482.                                                                                             #endif
  483. EXTERN_API( void )
  484. HSetState                        (Handle                 h,
  485.                                  SInt8                     flags)                                ONEWORDINLINE(0xA06A);
  486.  
  487. EXTERN_API( void )
  488. PurgeSpace                        (long *                    total,
  489.                                  long *                    contig);
  490.  
  491. #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  492. /*
  493.     PurgeSpaceTotal and PurgeSpaceContiguous are currently only implement
  494.     on classic 68K.  The are the same as PurgeSpace() but return just
  495.     one value (either total space purgable or contiguous space purgable).
  496. */
  497.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  498.                                                                                             #pragma parameter __A0 PurgeSpaceTotal
  499.                                                                                             #endif
  500. EXTERN_API( long )
  501. PurgeSpaceTotal                    (void)                                                        ONEWORDINLINE(0xA062);
  502.  
  503.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  504.                                                                                             #pragma parameter __D0 PurgeSpaceContiguous
  505.                                                                                             #endif
  506. EXTERN_API( long )
  507. PurgeSpaceContiguous            (void)                                                        ONEWORDINLINE(0xA062);
  508.  
  509.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  510.                                                                                             #pragma parameter __A0 PurgeSpaceSysTotal
  511.                                                                                             #endif
  512. EXTERN_API( long )
  513. PurgeSpaceSysTotal                (void)                                                        ONEWORDINLINE(0xA562);
  514.  
  515.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  516.                                                                                             #pragma parameter __D0 PurgeSpaceSysContiguous
  517.                                                                                             #endif
  518. EXTERN_API( long )
  519. PurgeSpaceSysContiguous            (void)                                                        ONEWORDINLINE(0xA562);
  520.  
  521. #endif  /* TARGET_OS_MAC && TARGET_CPU_68K &&  !TARGET_RT_MAC_CFM */
  522.  
  523. /*****************************************************************************
  524.  
  525.     The routines: 
  526.  
  527.         BlockMoveUncached
  528.         BlockMoveDataUncached
  529.         BlockZero
  530.         BlockZeroUncached
  531.     
  532.     are intended for developers writing drivers. They do not exist in 
  533.     “InterfaceLib.” You must link with “DriverServicesLib” to access them.
  534.     
  535.     But since BlockMove and BlockMoveData exist in both “InterfaceLib” and
  536.     “DriverServicesLib”, you cannot link with both libraries.
  537.     
  538. *****************************************************************************/
  539.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  540.                                                                                             #pragma parameter BlockMove(__A0, __A1, __D0)
  541.                                                                                             #endif
  542. EXTERN_API( void )
  543. BlockMove                        (const void *            srcPtr,
  544.                                  void *                    destPtr,
  545.                                  Size                     byteCount)                            ONEWORDINLINE(0xA02E);
  546.  
  547.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  548.                                                                                             #pragma parameter BlockMoveData(__A0, __A1, __D0)
  549.                                                                                             #endif
  550. EXTERN_API( void )
  551. BlockMoveData                    (const void *            srcPtr,
  552.                                  void *                    destPtr,
  553.                                  Size                     byteCount)                            ONEWORDINLINE(0xA22E);
  554.  
  555. EXTERN_API_C( void )
  556. BlockMoveUncached                (const void *            srcPtr,
  557.                                  void *                    destPtr,
  558.                                  Size                     byteCount);
  559.  
  560. EXTERN_API_C( void )
  561. BlockMoveDataUncached            (const void *            srcPtr,
  562.                                  void *                    destPtr,
  563.                                  Size                     byteCount);
  564.  
  565. EXTERN_API_C( void )
  566. BlockZero                        (void *                    destPtr,
  567.                                  Size                     byteCount);
  568.  
  569. EXTERN_API_C( void )
  570. BlockZeroUncached                (void *                    destPtr,
  571.                                  Size                     byteCount);
  572.  
  573.  
  574. EXTERN_API( void )
  575. MaxApplZone                        (void)                                                        ONEWORDINLINE(0xA063);
  576.  
  577.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  578.                                                                                             #pragma parameter SetApplBase(__A0)
  579.                                                                                             #endif
  580. EXTERN_API( void )
  581. SetApplBase                        (void *                    startPtr)                            ONEWORDINLINE(0xA057);
  582.  
  583. EXTERN_API( void )
  584. MoreMasters                        (void)                                                        ONEWORDINLINE(0xA036);
  585.  
  586.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  587.                                                                                             #pragma parameter SetApplLimit(__A0)
  588.                                                                                             #endif
  589. EXTERN_API( void )
  590. SetApplLimit                    (void *                    zoneLimit)                            ONEWORDINLINE(0xA02D);
  591.  
  592.  
  593.  
  594. EXTERN_API( void )
  595. InitApplZone                    (void)                                                        ONEWORDINLINE(0xA02C);
  596.  
  597.  
  598. /*  Temporary Memory routines renamed, but obsolete, in System 7.0 and later.  */
  599. EXTERN_API( void )
  600. TempHLock                        (Handle                 h,
  601.                                  OSErr *                resultCode)                            THREEWORDINLINE(0x3F3C, 0x001E, 0xA88F);
  602.  
  603. EXTERN_API( void )
  604. TempHUnlock                        (Handle                 h,
  605.                                  OSErr *                resultCode)                            THREEWORDINLINE(0x3F3C, 0x001F, 0xA88F);
  606.  
  607. EXTERN_API( void )
  608. TempDisposeHandle                (Handle                 h,
  609.                                  OSErr *                resultCode)                            THREEWORDINLINE(0x3F3C, 0x0020, 0xA88F);
  610.  
  611. EXTERN_API( Ptr )
  612. TempTopMem                        (void)                                                        THREEWORDINLINE(0x3F3C, 0x0016, 0xA88F);
  613.  
  614.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  615.                                                                                             #pragma parameter __D0 HoldMemory(__A0, __A1)
  616.                                                                                             #endif
  617. EXTERN_API( OSErr )
  618. HoldMemory                        (void *                    address,
  619.                                  unsigned long             count)                                TWOWORDINLINE(0x7000, 0xA05C);
  620.  
  621.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  622.                                                                                             #pragma parameter __D0 UnholdMemory(__A0, __A1)
  623.                                                                                             #endif
  624. EXTERN_API( OSErr )
  625. UnholdMemory                    (void *                    address,
  626.                                  unsigned long             count)                                TWOWORDINLINE(0x7001, 0xA05C);
  627.  
  628.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  629.                                                                                             #pragma parameter __D0 LockMemory(__A0, __A1)
  630.                                                                                             #endif
  631. EXTERN_API( OSErr )
  632. LockMemory                        (void *                    address,
  633.                                  unsigned long             count)                                TWOWORDINLINE(0x7002, 0xA05C);
  634.  
  635.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  636.                                                                                             #pragma parameter __D0 LockMemoryForOutput(__A0, __A1)
  637.                                                                                             #endif
  638. EXTERN_API( OSErr )
  639. LockMemoryForOutput                (void *                    address,
  640.                                  unsigned long             count)                                TWOWORDINLINE(0x700A, 0xA05C);
  641.  
  642.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  643.                                                                                             #pragma parameter __D0 LockMemoryContiguous(__A0, __A1)
  644.                                                                                             #endif
  645. EXTERN_API( OSErr )
  646. LockMemoryContiguous            (void *                    address,
  647.                                  unsigned long             count)                                TWOWORDINLINE(0x7004, 0xA05C);
  648.  
  649.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  650.                                                                                             #pragma parameter __D0 UnlockMemory(__A0, __A1)
  651.                                                                                             #endif
  652. EXTERN_API( OSErr )
  653. UnlockMemory                    (void *                    address,
  654.                                  unsigned long             count)                                TWOWORDINLINE(0x7003, 0xA05C);
  655.  
  656. EXTERN_API( OSErr )
  657. GetPhysical                        (LogicalToPhysicalTable * addresses,
  658.                                  unsigned long *        physicalEntryCount);
  659.  
  660.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  661.                                                                                             #pragma parameter __D0 DeferUserFn(__A0, __D0)
  662.                                                                                             #endif
  663. EXTERN_API( OSErr )
  664. DeferUserFn                        (UserFnUPP                 userFunction,
  665.                                  void *                    argument)                            ONEWORDINLINE(0xA08F);
  666.  
  667.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  668.                                                                                             #pragma parameter __D0 DebuggerGetMax
  669.                                                                                             #endif
  670. EXTERN_API( long )
  671. DebuggerGetMax                    (void)                                                        TWOWORDINLINE(0x7000, 0xA08D);
  672.  
  673. EXTERN_API( void )
  674. DebuggerEnter                    (void)                                                        TWOWORDINLINE(0x7001, 0xA08D);
  675.  
  676. EXTERN_API( void )
  677. DebuggerExit                    (void)                                                        TWOWORDINLINE(0x7002, 0xA08D);
  678.  
  679. EXTERN_API( void )
  680. DebuggerPoll                    (void)                                                        TWOWORDINLINE(0x7003, 0xA08D);
  681.  
  682.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  683.                                                                                             #pragma parameter __D0 GetPageState(__A0)
  684.                                                                                             #endif
  685. EXTERN_API( PageState )
  686. GetPageState                    (const void *            address)                            TWOWORDINLINE(0x7004, 0xA08D);
  687.  
  688.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  689.                                                                                             #pragma parameter __D0 PageFaultFatal
  690.                                                                                             #endif
  691. EXTERN_API( Boolean )
  692. PageFaultFatal                    (void)                                                        TWOWORDINLINE(0x7005, 0xA08D);
  693.  
  694.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  695.                                                                                             #pragma parameter __D0 DebuggerLockMemory(__A0, __A1)
  696.                                                                                             #endif
  697. EXTERN_API( OSErr )
  698. DebuggerLockMemory                (void *                    address,
  699.                                  unsigned long             count)                                TWOWORDINLINE(0x7006, 0xA08D);
  700.  
  701.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  702.                                                                                             #pragma parameter __D0 DebuggerUnlockMemory(__A0, __A1)
  703.                                                                                             #endif
  704. EXTERN_API( OSErr )
  705. DebuggerUnlockMemory            (void *                    address,
  706.                                  unsigned long             count)                                TWOWORDINLINE(0x7007, 0xA08D);
  707.  
  708.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  709.                                                                                             #pragma parameter __D0 EnterSupervisorMode
  710.                                                                                             #endif
  711. EXTERN_API( StatusRegisterContents )
  712. EnterSupervisorMode                (void)                                                        TWOWORDINLINE(0x7008, 0xA08D);
  713.  
  714.  
  715. /* 
  716.     StripAddress and Translate24To32 are traps on classic 68K,
  717.     but macro to the identity function on PowerMacs or other OS's.
  718. */
  719. #if TARGET_OS_MAC && TARGET_CPU_68K
  720.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  721.                                                                                             #pragma parameter __D0 StripAddress(__D0)
  722.                                                                                             #endif
  723. EXTERN_API( Ptr )
  724. StripAddress                    (void *                    theAddress)                            ONEWORDINLINE(0xA055);
  725.  
  726. #else
  727. #define StripAddress(x)       ((Ptr)(x))
  728. #endif  /* TARGET_OS_MAC && TARGET_CPU_68K */
  729.  
  730.  
  731. #if TARGET_OS_MAC && TARGET_CPU_68K
  732.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  733.                                                                                             #pragma parameter __D0 Translate24To32(__D0)
  734.                                                                                             #endif
  735. EXTERN_API( Ptr )
  736. Translate24To32                    (void *                    addr24)                                ONEWORDINLINE(0xA091);
  737.  
  738. #else
  739. #define Translate24To32(x)  ((Ptr)(x))
  740. #endif  /* TARGET_OS_MAC && TARGET_CPU_68K */
  741.  
  742. EXTERN_API( OSErr )
  743. HandToHand                        (Handle *                theHndl);
  744.  
  745.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  746.                                                                                             #pragma parameter __D0 PtrToXHand(__A0, __A1, __D0)
  747.                                                                                             #endif
  748. EXTERN_API( OSErr )
  749. PtrToXHand                        (const void *            srcPtr,
  750.                                  Handle                 dstHndl,
  751.                                  long                     size)                                ONEWORDINLINE(0xA9E2);
  752.  
  753. EXTERN_API( OSErr )
  754. PtrToHand                        (const void *            srcPtr,
  755.                                  Handle *                dstHndl,
  756.                                  long                     size);
  757.  
  758.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  759.                                                                                             #pragma parameter __D0 HandAndHand(__A0, __A1)
  760.                                                                                             #endif
  761. EXTERN_API( OSErr )
  762. HandAndHand                        (Handle                 hand1,
  763.                                  Handle                 hand2)                                ONEWORDINLINE(0xA9E4);
  764.  
  765.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  766.                                                                                             #pragma parameter __D0 PtrAndHand(__A0, __A1, __D0)
  767.                                                                                             #endif
  768. EXTERN_API( OSErr )
  769. PtrAndHand                        (const void *            ptr1,
  770.                                  Handle                 hand2,
  771.                                  long                     size)                                ONEWORDINLINE(0xA9EF);
  772.  
  773. #if OLDROUTINENAMES
  774. #define ApplicZone() ApplicationZone()
  775. #define MFTempNewHandle(logicalSize, resultCode) TempNewHandle(logicalSize, resultCode)
  776. #define MFMaxMem(grow) TempMaxMem(grow)
  777. #define MFFreeMem() TempFreeMem()
  778. #define MFTempHLock(h, resultCode) TempHLock(h, resultCode)
  779. #define MFTempHUnlock(h, resultCode) TempHUnlock(h, resultCode)
  780. #define MFTempDisposHandle(h, resultCode) TempDisposeHandle(h, resultCode)
  781. #define MFTopMem() TempTopMem()
  782. #define ResrvMem(cbNeeded) ReserveMem(cbNeeded)
  783. #define DisposPtr(p) DisposePtr(p)
  784. #define DisposHandle(h) DisposeHandle(h)
  785. #define ReallocHandle(h, byteCount) ReallocateHandle(h, byteCount)
  786. #endif  /* OLDROUTINENAMES */
  787.  
  788.  
  789. #if PRAGMA_STRUCT_ALIGN
  790.     #pragma options align=reset
  791. #elif PRAGMA_STRUCT_PACKPUSH
  792.     #pragma pack(pop)
  793. #elif PRAGMA_STRUCT_PACK
  794.     #pragma pack()
  795. #endif
  796.  
  797. #ifdef PRAGMA_IMPORT_OFF
  798. #pragma import off
  799. #elif PRAGMA_IMPORT
  800. #pragma import reset
  801. #endif
  802.  
  803. #ifdef __cplusplus
  804. }
  805. #endif
  806.  
  807. #endif /* __MACMEMORY__ */
  808.  
  809.